package com.lantosec.hmrp.modules.form.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lantosec.hmrp.core.kit.Result;
import com.lantosec.hmrp.modules.form.entity.FormColumns;
import com.lantosec.hmrp.modules.form.vo.FormColumnsVO;
import com.lantosec.hmrp.modules.form.vo.UpdateCommentVO;

import java.util.List;

/**
 * <p>
 * 自定义表单列定义 服务类
 * </p>
 *
 * @author AutoCode
 * @since 2020-04-15
 */
public interface IFormColumnsService extends IService<FormColumns> {

    /**
     * 根据表的信息查询列
     *
     * @param tableSchema 数据库名称
     * @param tableName   表名
     * @param tableType   表类型 BASE TABLE基本表，VIEW视图
     * @return
     */
    List<FormColumnsVO> queryByTableInfo(String tableSchema, String tableName, String tableType);

    /**
     * 根据表名查询表字段集合
     *
     * @param tableId
     * @return
     */
    List<FormColumns> queryByTableId(String tableId, Boolean isToCamelCase);

    /**
     * 同步新添加的列
     * @param tableId   表格Id
     * @return
     */
    Result<Boolean> synchronizeColumn(String tableId);

    /**
     * 根据字段Id查询绑定的值
     *
     * @param formData  表单数据
     * @return
     */
    Result<Object> bindColumnValue(String formData);

    /**
     * 保存
     */
    Result<String> saveColumn(FormColumns entity);

    /**
     * 修改
     */
    Result<Void> updateColumn(FormColumns entity);

    /**
     * 修改字段的描述
     * @param entity
     * @return
     */
    Result<Void> updateColumnComment(UpdateCommentVO entity);

    /**
     * 根据报表sql获取查询的字段列
     */
    List<String> getFieldBySql(String sql);
}
